// 该文件用于创建Vuex中最为核心的store

// 引入Vue
import Vue from "vue"
// 引入Vuex
import Vuex from "vuex"
// 使用Vuex
Vue.use(Vuex);

// 准备actions——用于响应组件中的动作
// context参数 表示当前的上下文的内容，方便获取数据（比如获取数据的过程较为复杂，需要多次调取接口和计算）
// value参数 ：用于接收传递的参数  在actions中，可以传递参数，参数通过value接收，但是尽量不要直接修改state里面的数据，而是通过mutations来修改state的数据

const actions = {
  // jia(context, value) {
  //   // console.log("actions中的jia被调用了", context, value);
  //   context.commit("JIA", value);
  // },
  // jian(context, value) {
  //   // console.log("actions中的jian被调用了", context, value);
  //   context.commit("JIAN", value);
  // },
  jiaOdd(context, value) {
    console.log("actions中的jiaOdd被调用了", context, value);
    console.log("处理了一些事情---jiaOdd");
    if(context.state.sum % 2) {
      context.dispatch("demo1", value);
    }
  },
  demo1(context, value) {
    console.log("处理了一些事情---demo1");
    context.dispatch("demo2", value);
  },
  demo2(context, value) {
    console.log("处理了一些事情---demo1");
    if(context.state.sum % 2) {
      context.commit("JIA", value);
      // context.state.sum += value;      // 乱拳打死老师傅
    }
  },
  jianWait(context, value) {
    console.log("actions中的JIANWAIT被调用了", context, value);
    setTimeout(() => {
      context.commit("JIA", value);
    }, 1000);
  },
};

// 准备mutations——用于操作数据（state）
const mutations = {
  JIA(state, value) {
    // console.log("mutations中的JIA被调用了", state, value);
    state.sum += value
  },
  JIAN(state, value) {
    // console.log("mutations中的JIAN被调用了", state, value);
    state.sum -= value
  }
};

// 准备state——用于存储数据
const state = {
  sum: 0
};

/* 
const store = new Vuex.Store({
  // actions: actions,
  // mutations: mutations,
  // state: state
  actions,
  mutations,
  state
})

// 导出或暴露store
export default store 
*/

// 创建  导出或暴露store
export default new Vuex.Store({
  actions,
  mutations,
  state
})


